iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 22
1
自我挑戰組

語法改革!零基礎新手也能讀懂的JS!系列 第 22

Day22 語法改革!零基礎新手也能讀懂的JS - 事件冒泡與捕獲

  • 分享至 

  • xImage
  •  

從很早開始就一直有說到事件,那麼今天就會開始來講解所謂的事件是什麼!

事件機制

JS其實是一種以事件作為驅動的語言,也就是說雖然瀏覽器一開始會讀取所有的JS程式碼,但有些會有所謂的「事件」來控制,例如:當某按鈕被點擊、輸入框被輸入的時候、按下或放開按鍵的時候等等都會等到事件被觸發才會執行裡面的程式碼。

好比今天去買麥當勞,給了你號碼,你並不會在他還沒叫到你的號碼的時候就去取餐。

而是他叫了你的號碼(事件觸發)=>你再去取餐(被觸發的程式碼)

事件的流程

我們先來看看如果有兩塊div

<html>
  <body>
    <div class="out" style="width:80px;height:50px;background-color:red;">
      <div class="in"style="width:50px;height:40px;background-color:blue;">
	  </div>
    </div>
  </body>
</html>


如果點擊了藍色區塊,是不是也代表了我們也有點到紅色區塊呢?又或者是說其實我們點到了整個網頁!?

然而事件的流程就是在說明,我們 點擊網頁的元素接收事件的順序

那麼又可以分成兩種機制

  1. 事件冒泡(Event Bubbling)
  2. 事件捕獲(Event Capturing)

今天就來介紹這兩款到底差別在哪!

事件冒泡(Event Bubbling)

其實就很像是由下往上,由啟動事件的那一個元素開始逐漸往上傳遞,一直到最後的根節點(document)

<html>
  <body>
    <div class="out">
	  CK
    </div>
  </body>
</html>

以上頭的例子來看觸發的順序就是

  1. <div>CK</div>
  2. <body>
  3. <html>
  4. document

事件捕獲(Event Capturing)

剛好跟冒泡相反,如果看剛剛的例子的話他就會是

  1. document
  2. <html>
  3. <body>
  4. <div>CK</div>

那你可能會問,所以JS到底是以哪一個為主?其實兩個都會執行,也就是說觸發事件的時候會先執行捕獲一直到被點擊的元素節點,在一路向上傳遞最後回到document

好了,今天就講解到這邊,明天就來講解是用哪個API來控制事件的吧!


上一篇
Day21 語法改革!零基礎新手也能讀懂的JS - BOM
下一篇
Day23 語法改革!零基礎新手也能讀懂的JS - addEventListener(上)
系列文
語法改革!零基礎新手也能讀懂的JS!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言